import JSZip from 'jszip';
import FileSaver from 'file-saver';

export default function batchDownload(urls: any) {
  var zipName = new Date().getDate() + '.zip'; // 下载后压缩包的命名
  var zip = new JSZip();
  var promises = [];
  let cache = [];
  let arrImg = [];
  console.log(JSON.stringify(urls))
  for (let i = 0; i < urls.length; i++) {
    let index=urls[i].lastIndexOf('.')
    let suffix=urls[i].substr(index)
    arrImg.push({
      path: urls[i], // 文件链接
      name: i+suffix, // 文件名称
    });
  }
  //console.log('arrImg ' + JSON.stringify(arrImg));
  for (let item of arrImg) {
    // item.path为文件链接地址
    const promise = getImgArrayBuffer(item.path).then((data) => {
      // 下载文件, 并存成ArrayBuffer对象(blob)
      zip.file(item.name, data, { binary: true }); // 逐个添加文件
      cache[item.name] = data;
    });
    promises.push(promise);
  }
  Promise.all(promises)
    .then(() => {
      zip.generateAsync({ type: 'blob' }).then((content) => {
        // 生成二进制流
        FileSaver.saveAs(content, zipName); // 利用file-saver保存文件  自定义文件名
      });
    })
    .catch((e) => {
      console.log('文件压缩失败');
    });
}

//文件以流的形式获取（参数url为文件链接地址）
 function getImgArrayBuffer(url: string) {
  return new Promise((resolve, reject) => {
    //通过请求获取文件blob格式
    let xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET', url, true);
    xmlhttp.responseType = 'blob';
    xmlhttp.onload = function () {
      console.log(JSON.stringify(this))
      if (this.status == 200) {
        resolve(this.response);
      } else {
        reject(this.status);
      }
    };
    xmlhttp.send();
  });
}

export function downFile(url:string)
{
  let ext = url.substring(url.length - 4, url.length);
  if(ext.indexOf('_Expires=')>=0)
  {
    ext=ext.split('_Expires=')[0]
  }
   //ext.split('_Expires=')
  FileSaver.saveAs(url,ext);
}
